import logging
import os
import sys

from PySide6.QtGui import QIcon
from PySide6.QtWidgets import QApplication
from utils import glo
from pattern.single_mode import SingleWindow
from pattern.vs_mode import VsWindow
import IMAGEFIELD_rc

# # 禁止标准输出
# sys.stdout = open(os.devnull, 'w')
# logging.disable(logging.CRITICAL)  # 禁用所有级别的日志


def vs_show():
    single_mode_glo = glo.get_value('single_mode')
    vs_mode_glo = glo.get_value('vs_mode')
    glo.set_value('model_name1', "detect_blink_belt yolo_detect yolo_classify yolo_track yolo_pose")
    glo.set_value('model_name2', "detect_blink_belt yolo_detect yolo_classify yolo_track yolo_pose")
    vs_mode_glo.reloadModel()
    vs_mode_glo.show()
    single_mode_glo.animation_window = None
    single_mode_glo.closed.disconnect()


def single_show():
    single_mode_glo = glo.get_value('single_mode')
    vs_mode_glo = glo.get_value('vs_mode')
    glo.set_value('model_name', "detect_blink_belt yolo_detect yolo_classify yolo_track yolo_pose")
    single_mode_glo.reloadModel()
    single_mode_glo.show()
    vs_mode_glo.animation_window = None
    vs_mode_glo.closed.disconnect()


def single_vs():
    single_mode_glo = glo.get_value('single_mode')
    single_mode_glo.closed.connect(vs_show)
    single_mode_glo.close()


def vs_single():
    vs_mode_glo = glo.get_value('vs_mode')
    vs_mode_glo.closed.connect(single_show)
    vs_mode_glo.close()


if __name__ == '__main__':
    app = QApplication([])  # 创建应用程序实例
    app.setWindowIcon(QIcon(':/images/swimmingliu.ico'))  # 设置应用程序图标

    # 为整个应用程序设置样式表，去除所有QFrame的边框
    app.setStyleSheet("QFrame { border: none; }")

    # 创建窗口实例
    single_mode = SingleWindow()
    vs_mode = VsWindow()

    # 初始化全局变量管理器，并设置值
    glo._init()  # 初始化全局变量空间

    glo.set_value('single_mode', single_mode)  # 存储单窗口实例
    glo.set_value('vs_mode', vs_mode)  # 存储前后对比窗口实例

    # 从全局变量管理器中获取窗口实例
    single_mode = glo.get_value('single_mode')
    vs_mode = glo.get_value('vs_mode')

    # 显示single_mode窗口
    single_mode.show()

    # 连接信号和槽，以实现界面之间的切换
    single_mode.src_vsmode.clicked.connect(single_vs)  # 从单模式切换到对比模式
    vs_mode.src_singlemode.clicked.connect(vs_single)  # 从对比模式切换回单模式

    sys.exit(app.exec())  # 启动应用程序的事件循环
